package com.example.everying.model.entity.order;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 悬赏订单实体类
 */
@Data
@TableName("bounty_order")
public class BountyOrder {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键ID")
    private Long id;

    /**
     * 订单编号
     */
    @ApiModelProperty(value = "订单编号")
    private String orderNo;

    /**
     * 文章ID
     */
    @ApiModelProperty(value = "文章ID")
    private String articleId;

    /**
     * 发布者ID
     */
    @ApiModelProperty(value = "发布者ID")
    private String publisherId;

    /**
     * 接单者ID
     */
    @ApiModelProperty(value = "接单者ID")
    private String acceptorId;

    /**
     * 付款人ID
     */
    @ApiModelProperty(value = "付款人ID")
    private String paymentId;

    /**
     * 悬赏总金额
     */
    @ApiModelProperty(value = "悬赏总金额")
    private BigDecimal bountyAmount;

    /**
     * 现金支付部分
     */
    @ApiModelProperty(value = "余额支付部分")
    private BigDecimal cashAmount;

    /**
     * 积分支付部分
     */
    @ApiModelProperty(value = "积分支付部分")
    private BigDecimal pointsAmount;

    /**
     * 积分抵扣部分（仅限1000的倍数）
     */
    @ApiModelProperty(value = "积分抵扣部分")
    private Integer points;

    /**
     * 订单状态(0-待接单 1-已接单 2-接单人待完成 3-发布人待完成 4-已完成 5-已取消 6-申诉中 7-已退款)
     */
    @ApiModelProperty(value = "订单状态")
    private Integer orderStatus;

    /**
     * 接单时间
     */
    @ApiModelProperty(value = "接单时间")
    private LocalDateTime acceptTime;

    /**
     * 完成时间
     */
    @ApiModelProperty(value = "完成时间")
    private LocalDateTime completeTime;

    /**
     * 取消时间
     */
    @ApiModelProperty(value = "取消时间")
    private LocalDateTime cancelTime;

    /**
     * 取消原因
     */
    @ApiModelProperty(value = "取消原因")
    private String cancelReason;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}